import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: hp
 * Date: 2024-08-07
 * Time: 14:19
 */
public class Demo1 {
    public static void main(String[] args) throws InterruptedException {
        ExecutorService service = Executors.newFixedThreadPool(4);
        for (int i = 0; i < 100; i++) {
            int id = i;
            //由于在lambda表达式中需要加入i的值，此时的i是变量捕获，那么此时i就必须是final或者事实final
            //所以这边通过id来进行实现事实final，也可以通过成员变量来进行实现。
            service.submit(() -> {
                Thread current = Thread.currentThread();
                System.out.println("Hello Thread" + id + "," + current.getName());
            });
        }
        //使用sleep防止线程还没执行完就被提前结束了。
        Thread.sleep(2000);
        //当100个任务执行完，整个进程并没有结束，因为线程依旧存在，并且这是前台线程，所以可以手动结束线程。
        service.shutdown();
        System.out.println("线程结束!");
    }
}
